// 不是所有的路由都应该被访问
// 静态路由  是可以一直被访问
// 动态路由  得根据当前登陆者身份进行筛选
// constantRoutes 静态路由   asyncRoutes动态路由
import { constantRoutes, asyncRoutes } from '@/router'
// 存放状态
const state = {
// 定义当前用户拥有的路由权限
  routes: [constantRoutes] // 默认由静态路由权限
}
// 修改
const mutations = {
// 更新路由的数据
  setRoutes(state, newRoutes) {
    // 登录 =>获取新的路由=>合并
    state.routes = [...constantRoutes, ...newRoutes]
  }

}
// 处理异步请求
const actions = {
// 筛选路由 menus => 帅选出可以访问的动态路由表,并返回,同时提交mutations
  filterRoutes({ commit }, menus) {
  // 此时menus要和动态路由表匹配
  // 以menus为基础
    const routes = []
    menus.forEach(key => {
    // key就是一个标识
    // asyncRoutes.filter(item=>item.name===key) //得到一个数组
      routes.push(...asyncRoutes.filter(item => item.name === key))
    })
    // routes 就是是筛选之后的路由
    // 提交mutations 给vuex用,显示左侧导航菜单用
    commit('setRoutes', routes)
    // 通过 addRoutes => 添加到当前的路由表
    return routes
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
